/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package MyDataType;

/**
 *
 * @author Welcome
 */
public class MyInt extends MyData{
    //<editor-fold defaultstate="collapsed" desc="1/Các thuộc tính cơ bản">
    
    //</editor-fold>

    //<editor-fold defaultstate="collapsed" desc="2/ Các phương thức khởi tạo">
    public MyInt() {
        super();
        myType = MyType.INT;
    }
    
    public MyInt(String content) {
        super(content);
        myType = MyType.INT;
    }
    //</editor-fold>

    //<editor-fold defaultstate="collapsed" desc="3/ Các phương thức Getter/Setter">
    
    /**
     * Lấy nội dung content, trả về kiểu int
     * Nếu content ko hợp lệ, trả về -99999
     * @return 
     */
    public int getContentByInt()
    {
        int temp=-99999;
        if(isLegal(content))
            temp = Integer.parseInt(content);
        return temp;
    }
    //</editor-fold>

    //<editor-fold defaultstate="collapsed" desc="4/ Các phương thức xử lý nghiệp vụ">
    
    /**
     * Kiểm tra nội dung có phải là số hay không ?
     * @param content
     * @return 
     */
    public boolean isLegal(String content) {
        boolean flag = true;
        for(int i=0; i<content.length();i++)
        {
            if(Character.isLetter(content.charAt(i)))
            {
                return false;
            }
        }
        
        return flag;
    }
    
    /**
     * So sánh bằng (==) với một MyInt khác
     * @param MyInt-pattern
     * @return boolean
     */
    public  boolean isEqual(MyInt pattern)
    {
        int intcontent1 = getContentByInt();
        int intcontent2 = pattern.getContentByInt();
        
        return intcontent1==intcontent2;
    }
    
    /**
     * So sánh > một MyInt khác
     * @param MyInt-pattern
     * @return boolean
     */
    public boolean isLarger(MyInt pattern)
    {
        int intcontent1 = getContentByInt();
        int intcontent2 = pattern.getContentByInt();
        
        return intcontent1>intcontent2;
    }
    
    /**
     * So sánh < với MyInt khác
     * @param pattern
     * @return 
     */
    public boolean isSmaller(MyInt pattern)
    {
        int intcontent1 = getContentByInt();
        int intcontent2 = pattern.getContentByInt();
        
        return intcontent1<intcontent2;
    }
    
    /**
     * So sánh >=
     * @param pattern
     * @return 
     */
    public boolean isLargerEqual(MyInt pattern)
    {
        return !this.isSmaller(pattern);
    }
    
    /**
     * So sánh <=
     * @param pattern
     * @return 
     */
    public  boolean isSmallerEqual(MyInt pattern)
    {
        return !this.isLarger(pattern);
    }
    
    /**
     * Lấy kiểu dữ liệu
     * @return 
     */
    @Override
    public MyType getType() {
        return myType;
    }

    @Override
    public boolean comparisonWith(MyData myData,String sign) {
        
        MyInt tempInt = (MyInt)myData;
        sign=sign.trim();
        if(sign.equals("="))
        {
            return this.isEqual(tempInt);
        }
        else
        {
            if(sign.equals(">"))
            {
                return this.isLarger(tempInt);
            }
            else
                if(sign.equals("<"))
                {
                    return this.isSmaller(tempInt);
                }
                else
                    if(sign.equals(">="))
                    {
                        return this.isLargerEqual(tempInt);
                    }
                    else
                        return this.isSmallerEqual(tempInt);
        }
       
    }
    //</editor-fold>

}
